using System;
using System.Collections;

namespace Anvil.Core
{
    public interface IEntryDictionary
    {
        /// <summary>
        /// Provide a string array for the entries listed in keys.
        /// </summary>
        /// <returns>String array of keys</returns>
        string[] ToStringArray(ICollection keys);

        /// <summary>
        /// Provide a string array for the entries.
        /// </summary>
        /// <returns>String array of keys</returns>
        string[] ToStringArray();

        void Add(string key, string value);
        void AddAll(IDictionary sources);
        string Get(string key);
        void Set(string key, string value);
        Boolean Contains(Object key);
        IDictionary Criteria();

        /// <summary>
        /// Call calculated properties so that 
        /// they are cached as entries in the table.
        /// </summary>
        /// <remarks>
        /// <p>Override to provide functionality</p>
        /// </remarks>
        /// 
        void CacheText();
    }
}